package com.itheima.pojo;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.itheima.anno.State;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.groups.Default;
import lombok.Data;
import org.hibernate.validator.constraints.URL;
import java.time.LocalDateTime;

// 实体：样例类
@Data
public class Article {

    @NotNull(groups = Update.class)
    private Integer id;// 主键ID
    @NotEmpty
    @Pattern(regexp = "^\\S{1,10}$",groups = Add.class) // 1-10个非空字符
    private String title;// 文章标题
    @NotEmpty
    private String content;// 文章内容
    @NotEmpty
    @URL
    private String coverImg;// 封面图像
    @NotEmpty
    @State  // anno包中配置自定义注解，在validation包下的类实现：发布状态只能为: 已发布|草稿
    private String state;// 发布状态 已发布|草稿
    @NotNull
    private Integer categoryId;// 文章分类id
    @JsonIgnore // 不返回密码
    private Integer createUser;// 创建人ID
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") // 返回时间格式
    private LocalDateTime createTime;//创建时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") // 返回时间格式
    private LocalDateTime updateTime;//更新时间

    public interface Add extends Default {

    }
    public interface Update extends Default {

    }
}
